﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using RRTWSEntityDSD.Dominio;
using WebServiceDSDG6.Persistencia;
using System.Data.SqlClient;
using System.Data;
using System.Configuration;

namespace RRTWSEntityDSD.Dao
{
    public class ClienteDAO : BaseDAO<Cliente, int>
    {

        public RRTWSEntityDSD.Dominio.Cliente getClienteByUuID(string uuid)
        {

            try
            {
                using (SqlCommand cmd = new SqlCommand("TRI_ssf_Cliente", cnx))
                {
                    cmd.CommandType = CommandType.StoredProcedure;
                    cmd.Parameters.AddWithValue("@CLI_UUID", uuid);

                    cnx.Open();

                    using (SqlDataReader dr = cmd.ExecuteReader())
                    {
                        while (dr.Read())
                        {
                            if (!Convert.IsDBNull(dr["CLI_ID_CLIENTE"]))
                            {
                                Cliente cliente = new Cliente();
                                cliente.idcliente = int.Parse(dr["CLI_ID_CLIENTE"].ToString());
                                cliente.uuid = dr["CLI_UUID"].ToString();
                                cliente.dni = dr["CLI_DNI"].ToString();
                                cliente.apellidos = dr["CLI_APELLIDOS"].ToString();
                                cliente.nombres = dr["CLI_NOMBRES"].ToString();
                                return cliente;
                            }

                        }

                    }

                }

            }
            catch (InvalidOperationException e)
            {
                throw new InvalidOperationException("Error de conexiones : " + e.Message);
            }
            finally
            {
                cnx.Close();
            }
            return null;
        }

        public RRTWSEntityDSD.Dominio.Cliente insert(string uuid, string dni, string apellidos, string nombres)
        {
            Cliente c = new Cliente() { uuid = uuid, apellidos = apellidos, nombres = nombres, dni = dni };
            c = Crear(c);
            return c;
            //throw new NotImplementedException();
        }

        public Cliente getClienteByID(int idCliente)
        {
            string query = "SELECT * FROM dbo.CLIENTE WHERE CLI_ID_CLIENTE=" + idCliente;
            try
            {
                using (SqlCommand cmd = new SqlCommand(query, cnx))
                {
                    //cmd.CommandType = CommandType.StoredProcedure;
                    //cmd.Parameters.AddWithValue("@CLI_UUID", idCliente);

                    cnx.Open();

                    using (SqlDataReader dr = cmd.ExecuteReader())
                    {
                        while (dr.Read())
                        {
                            if (!Convert.IsDBNull(dr["CLI_ID_CLIENTE"]))
                            {
                                Cliente cliente = new Cliente();
                                cliente.idcliente = int.Parse(dr["CLI_ID_CLIENTE"].ToString());
                                cliente.uuid = dr["CLI_UUID"].ToString();
                                cliente.dni = dr["CLI_DNI"].ToString();
                                cliente.apellidos = dr["CLI_APELLIDOS"].ToString();
                                cliente.nombres = dr["CLI_NOMBRES"].ToString();
                                return cliente;
                            }

                        }

                    }

                }

            }
            catch (InvalidOperationException e)
            {
                throw new InvalidOperationException("Error de conexiones : " + e.Message);
            }
            finally
            {
                cnx.Close();
            }
            return null;
        }
    }
}